home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / avm1_19.lha / rexx / reply.avm < prev    next >
Text File  |  1994-04-06  |  7KB  |  253 lines

  1. /* TITLE: avm:source/reply.avmsrc */
  2. parse arg mailbox logs
  3.  
  4. numlogs = words(logs)
  5. do i = 1 to numlogs
  6.   call loadLogEntry(mailbox, word(logs, i))
  7.   handle = makeUniqueFile()
  8.   if log.returnNumber = '' then log.returnNumber = log.cidNumber
  9.   log.fileName = handle; log.returnRetry = 0; log.returnInterval = 5
  10.   log.altFileName = voiceFile(mailbox, 'Introduction'); log.returnSendFunc = 'DefaultSender'
  11.   log.time = cTime(); log.origMailbox = mailbox; call saveLogEntry('Outgoing', handle)
  12.   address command 'run <nil: >nil: avm:schedulerview' 'outgoing' handle
  13. end
  14.  
  15. error:
  16. exit
  17.  
  18. exit
  19.  
  20. mailboxDir: procedure
  21.     parse arg mailbox
  22.  
  23.     return 'avm:' || mailbox || '/'
  24.  
  25. logFile: procedure
  26.     parse arg mailbox, magiccookie
  27.  
  28.     return 'avm:' || mailbox || '/logs/' || magiccookie
  29.  
  30. voiceFile: procedure
  31.     parse arg mailbox, magiccookie
  32.  
  33.         if (verify(magiccookie, '/:', 'M') = 0) then
  34.           return 'avm:' || mailbox || '/voices/' || magiccookie
  35.         else
  36.           return magiccookie
  37.  
  38. makeUniqueFile: procedure
  39.     if arg() ~= 0 then do
  40.         rc = "makeUniqueFile: bad args"
  41.         signal error
  42.     end
  43.     return address() || '.' || date('i') || '.' || time('s') || '.' || random(1, 999, time('s'))
  44.  
  45. convertToDate: procedure
  46.     if arg() ~= 1 then do
  47.         rc = "convertToDate: bad args"
  48.         signal error
  49.     end
  50.     parse arg timeInC
  51.  
  52.     actualTime = (timeInC - (2922)*86400) // (86400)
  53.     actualDate = (timeInC - actualTime - 2922*86400) % 86400
  54.  
  55.     return actualDate /* returning it in 'internal' format */
  56.  
  57. convertToTime: procedure
  58.     if arg() ~= 1 then do
  59.         rc = "convertToTime: bad args"
  60.         signal error
  61.     end
  62.     parse arg timeInC
  63.     
  64.     actualTime = (timeInC - (2922)*86400) // (86400)
  65.  
  66.     return actualTime
  67.  
  68. cTime: procedure
  69.     /* 2922 = 8*365 + 2 */
  70.     /* 86400 = 24*60*60 */
  71.     return (date('i')+2922)*86400 + time('s')
  72.  
  73. /* this returns a handle that you must use after initializing log. */
  74. initLogEntry: procedure expose log.
  75.     if arg() ~= 0 then do
  76.         rc = "initLogEntry: bad args"
  77.         signal error
  78.     end
  79.     
  80.     drop log.
  81.         log. = ''
  82.  
  83.         acidname = getclip(address() || 'CIDNAME')
  84.         acidnumber = getclip(address() || 'CIDNUMBER')
  85.  
  86.     /* 2922 = 8*365 + 2 */
  87.     /* 86400 = 24*60*60 */
  88.     log.time = (date('i')+2922)*86400 + time('s')
  89.     log.cidname = acidname
  90.     log.cidnumber = acidnumber
  91.  
  92.     return
  93.  
  94. loadLogEntry: procedure expose log.
  95.     if arg() ~= 2 then do
  96.         rc = "loadLogEntry: bad args"
  97.         signal error
  98.     end
  99.     parse arg mailbox, handle
  100.  
  101.         drop log.
  102.         log. = ''
  103.  
  104.     if ~exists(mailboxDir(mailbox)) then do
  105.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  106.         return
  107.     end
  108.  
  109.     opened = open(handle, logFile(mailbox, handle), 'r')
  110.         if opened then do
  111.         call showDebugger('Loading entry' logFile(mailbox, handle))
  112.         do while ~eof(handle)
  113.             line = readln(handle)
  114.             parse upper var line variable '=' value
  115.             log.variable = value
  116.         end
  117.         call close(handle)
  118.     end; else call showDebugger('Could not load' logFile(mailbox, handle))
  119.     return
  120.  
  121. /* pass a handle here */
  122. saveLogEntry: procedure expose log.
  123.     if arg() ~= 2 then do
  124.         rc = "saveLogEntry: bad args"
  125.         signal error
  126.     end
  127.     parse arg mailbox, handle
  128.  
  129.     if ~exists(mailboxDir(mailbox)) then do
  130.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  131.         return
  132.     end
  133.  
  134.     opened = open(handle, logFile(mailbox, handle), 'w')
  135.  
  136.     if opened then do
  137.         call showDebugger('Saving entry' logFile(mailbox, handle))
  138.         call writeln(handle, 'TYPE=' || log.type)
  139.         call writeln(handle, 'TIME=' || log.time)
  140.         call writeln(handle, 'LENGTH=' || log.length)
  141.  
  142.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  143.  
  144.         call writeln(handle, 'CIDNAME=' || log.cidname)
  145.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  146.  
  147.         call writeln(handle, 'COMMENT=' || log.comment)
  148.  
  149.         call writeln(handle, 'FILENAME=' || log.filename)
  150.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  151.  
  152.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  153.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  154.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  155.  
  156.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  157.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  158.  
  159.         call close(handle)
  160.         address rexx 'broadcast' 'addtomailbox' mailbox handle
  161.     end; else call showDebugger('Could not save' logFile(mailbox, handle))
  162.  
  163.     return
  164.  
  165. /* pass a handle here */
  166. updateLogEntry: procedure expose log.
  167.     if arg() ~= 2 then do
  168.         rc = "updateLogEntry: bad args"
  169.         signal error
  170.     end
  171.     parse arg mailbox, handle
  172.  
  173.     if ~exists(mailboxDir(mailbox)) then do
  174.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  175.         return
  176.     end
  177.  
  178.     if ~exists(logFile(mailbox, handle)) then do
  179.         call showDebugger('Unable to update non-existent' logFile(mailbox, handle))
  180.         return
  181.     end
  182.     opened = open(handle, logFile(mailbox, handle), 'w')
  183.  
  184.     if opened then do
  185.         call showDebugger('Updating entry' logFile(mailbox, handle))
  186.         call writeln(handle, 'TYPE=' || log.type)
  187.         call writeln(handle, 'TIME=' || log.time)
  188.         call writeln(handle, 'LENGTH=' || log.length)
  189.  
  190.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  191.  
  192.         call writeln(handle, 'CIDNAME=' || log.cidname)
  193.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  194.  
  195.         call writeln(handle, 'COMMENT=' || log.comment)
  196.  
  197.         call writeln(handle, 'FILENAME=' || log.filename)
  198.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  199.  
  200.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  201.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  202.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  203.  
  204.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  205.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  206.  
  207.         call close(handle)
  208.         address rexx 'broadcast' 'refreshmailboxentry' mailbox handle
  209.     end; else call showDebugger('Could not update' logFile(mailbox, handle))
  210.  
  211.     return
  212.  
  213.  
  214.  
  215. showDebugger: procedure
  216.     if arg() ~= 1 then do
  217.         say "showDebugger: ERROR"
  218.         exit 20
  219.     end
  220.  
  221.     parse arg debuggerInfo
  222.     
  223.     firstLine = sourceline(1)
  224.     parse var firstLine '/*' 'TITLE:' title '*/'
  225.     if showlist('p', 'AVMLOGGER') then
  226.         address 'AVMLOGGER' 'add' title ':' debuggerInfo
  227.     else
  228.         say title ':' debuggerInfo
  229.  
  230.     return 
  231.  
  232. /*-----------------------------------------------------------------------*/
  233. /*                         signal processing                             */
  234.  
  235. arexxerror:
  236. error:
  237.     call showDebugger("Error" rc "at line" sigl)
  238.     exit 20
  239.  
  240. break_c:
  241. halt:
  242.     call showDebugger("Halt/Break_C at line" sigl)
  243.     exit 20
  244.  
  245. novalue:
  246.     call showDebugger("No value at line" sigl)
  247.     exit 20
  248.  
  249. syntax:
  250.     call showDebugger("Syntax error" rc "at line" sigl)
  251.     exit 20
  252.  
  253.